home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
Apps
/
Utilities
/
Other
/
Briefcase
/
DView.m
< prev
next >
Wrap
Text File
|
1992-12-26
|
2KB
|
81 lines
#import "DView.h"
#import <appkit/NXImage.h>
#import <appkit/TextField.h>
#import <libc.h>
@implementation DView
static NXPoint origin = {0.0, 0.0};
static BOOL flag = YES;
#define STEPS 120
#define IMAGE_FILE "BigCase"
- initFrame:(const NXRect *)frameRect;
{
const NXSize aSize = {64.0,64.0};
[super initFrame:frameRect];
theImage = [NXImage findImageNamed:IMAGE_FILE];
buffer = [[NXImage allocFromZone:[self zone]] initSize:&aSize];
return self;
}
- free
{
if (theImage) [theImage free];
if (buffer) [buffer free];
return [super free];
}
- _doDissolve:i1 :i2
{
float delta = 0.0;
int i = 0;
for (i = 0; i <= STEPS; i++) {
delta = (float)i/(float)STEPS;
[i1 composite:NX_SOVER toPoint:&origin];
[i2 dissolve:delta toPoint:&origin];
[self display];
}
[i2 dissolve:1.0 toPoint:&origin];
return self;
}
- drawSelf:(NXRect *)rects :(int)rectCount;
{
if (flag) [theImage composite:NX_SOVER toPoint:&origin];
else [buffer composite:NX_SOVER toPoint:&origin];
return self;
}
- mouseDown:(NXEvent *)event
{
NXImage *oldImage = NULL, *newImage = NULL;
if ((event->type == NX_LMOUSEDOWN) &&
(event->flags & NX_COMMANDMASK) &&
(event->flags & NX_ALTERNATEMASK)) {
flag = NO;
[buffer lockFocus];
oldImage = [NXImage findImageNamed:IMAGE_FILE];
newImage = [NXImage findImageNamed:"me"];
[nameField setStringValue:"Subrata Sircar"];
[self _doDissolve:oldImage :newImage];
NXPing();
sleep(3);
[oldImage free];
oldImage = newImage;
newImage = [NXImage findImageNamed:IMAGE_FILE];
[nameField setStringValue:""];
[self _doDissolve:oldImage :newImage];
[buffer unlockFocus];
flag = YES;
[oldImage free];
[newImage free];
}
return self;
}
@end